package org.ccay.enumerable;

import java.io.Serializable;

import org.codehaus.jackson.annotate.JsonValue;

/**
 * 枚举类型接口
 * @author chaowangbang
 * @version 创建时间 2014年12月30日上午11:58:28
 */
public interface EnumItem<T> extends Serializable{
	
	/**
	 * @return 类型
	 */
	public String getType();
	
	/**
	 * @return 代码(编程使用，只有JAVA代码中此属性才有值)
	 */
	public String getName();
	
	/**
	 * @return 值 （存储用）
	 */
	@JsonValue
	public String getValue();
	
	/**
	 * 获取显示文本 国际化请参见{@link #getDisplayValue(String)}
	 * @return 显示文本 ()
	 */
	public String getDisplayValue();
	
	/**
	 * @return 排序索引
	 * 
	 */
	public int getIndex();
	
	/**
	 * 来源
	 * @return
	 */
	public String getSource();
	
	/**
	 * @param language
	 * @return 通过语言获得显示文本
	 */
	public String getDisplayValue(String language);

	EnumItem<T> fromValue(String value);
	
}
